package cn.tedu.javagame.star;

import javax.swing.*;
import java.awt.*;
import java.sql.Array;
import java.sql.Time;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

//面板类型，相当于窗口上的玻璃
public class StarPanel extends JPanel {
    //属性
    Color bkColor = new Color(0,0,128);//面板颜色
    List<Star> stars = new ArrayList<Star>();


    //构造
    public StarPanel(){
        this.setBackground(bkColor);

    }
    //行为
    //此方法是父类提供的，代表画画，在此进行重写，实现特定的业务，而且这个方法自动调用
    @Override
    public void paint(Graphics g){
        super.paint(g);
        g.setColor(Color.yellow);
        g.fillOval(10,10,50,50);
        g.setColor(new Color(0,0,128));
        g.fillOval(20,10,40,40);
        //设置画笔大小
        Font font = new Font("宋体",Font.BOLD,25);
        g.setFont(font);
        for (int i = 0;i < 500;i++){
            stars.add(new Star());
        }
        for (int i = 0;i < 500;i++){
            g.setColor(stars.get(i).color);
            g.drawString(stars.get(i).label,stars.get(i).x,stars.get(i).y);
        }

    }

    public void action(){
        //创建定时器对象
        Timer timer = new Timer();
        //启动定时器对象
        /**三个参数
         * 1、匿名内部类，这个不存在的类实现了接口 TimerTask
         * 2、整数，表示毫秒，程序执行到这里的时候经过{20}毫秒再执行第一个参数的内容
         * 3、整数，表示毫秒，程序执行完第一个内容后，以后每过{10}毫秒执行一次
         */

        timer.schedule(new TimerTask(){
            @Override
            public void run() {
                for (Star s : stars){
                    s.changeColor();
                    s.move();
                }

                repaint();
            }
        },20,100);
    }
}
